Перейти к основному содержимому

3.2. Storage Container Manager

Компоненты Apache Ozone: Storage Container Manager (SCM)

Storage Container Manager (SCM) — это один из ключевых компонентов Apache Ozone, который отвечает за управление контейнерами данных и DataNodes в кластере. SCM играет важную роль в обеспечении репликации, распределения данных и отказоустойчивости. Он координирует взаимодействие между DataNodes и Ozone Manager (OM) и управляет физическим размещением данных в системе.


1. Роль Storage Container Manager (SCM) в Ozone

SCM выполняет следующие основные функции:

  • Управление контейнерами данных: SCM отслеживает контейнеры — логические единицы хранения данных, которые содержат блоки.
  • Распределение данных между DataNodes: Определяет, на каких узлах будут храниться данные и их реплики.
  • Контроль репликации: SCM следит за тем, чтобы данные имели нужное количество реплик, и инициирует процесс восстановления, если реплика потеряна.
  • Управление состоянием DataNodes: Мониторит состояние узлов и балансирует нагрузку между ними.
  • Восстановление после сбоев: В случае отказа DataNode SCM автоматически распределяет реплики на доступные узлы.

2. Основные функции SCM

  1. Управление контейнерами:

    • Создание и отслеживание контейнеров, в которых хранятся блоки данных.
    • Поддержка репликации контейнеров для обеспечения отказоустойчивости.
  2. Мониторинг DataNodes:

    • Регулярно получает heartbeat-сообщения от DataNodes для мониторинга их состояния.
    • Обнаруживает сбои и исключает недоступные узлы из работы.
  3. Репликация и восстановление данных:

    • SCM поддерживает требуемый уровень репликации (например, 3 копии для каждого контейнера).
    • При сбое узла восстанавливает потерянные реплики на других DataNodes.
  4. Управление пулом идентификаторов:

    • SCM выделяет уникальные идентификаторы для контейнеров и блоков данных.

3. Архитектура Storage Container Manager

SCM включает несколько внутренних компонентов:

  1. SCM Metadata Store:
    SCM хранит метаданные о контейнерах и DataNodes в базе данных Ratis или RocksDB.

  2. SCM Pipeline Manager:
    Управляет потоками данных (pipelines), которые объединяют DataNodes для передачи и хранения блоков.

  3. SCM Replication Manager:
    Следит за тем, чтобы данные имели нужное количество реплик и восстанавливает реплики при сбоях.

  4. Heartbeat Manager:
    Обрабатывает heartbeat-сообщения от DataNodes и отслеживает их доступность.


4. Запуск и остановка SCM

Запуск SCM

SCM можно запустить с помощью команды:

bin/ozone scm --daemon start

Остановка SCM

bin/ozone scm --daemon stop

Проверка статуса SCM

bin/ozone admin service list

5. Конфигурация SCM

Основные параметры SCM задаются в файле ozone-site.xml. Пример настроек:

<configuration>
<property>
<name>ozone.scm.address</name>
<value>scm1.example.com:9861</value>
</property>

<property>
<name>ozone.scm.datanode.address</name>
<value>0.0.0.0:9862</value>
</property>

<property>
<name>ozone.scm.heartbeat.interval</name>
<value>30s</value>
</property>

<property>
<name>ozone.scm.replication.factor</name>
<value>3</value>
</property>
</configuration>
  • ozone.scm.address: Указывает IP-адрес и порт SCM.
  • ozone.scm.heartbeat.interval: Интервал отправки heartbeat-сообщений от DataNodes.
  • ozone.scm.replication.factor: Определяет количество реплик для каждого контейнера.

6. Резервное копирование и восстановление SCM

Создание снимка метаданных SCM

Вы можете создать снимок текущего состояния метаданных SCM:

bin/ozone admin scm snapshot create

Восстановление из снимка

bin/ozone admin scm snapshot restore --snapshot=<snapshot-path>

7. Мониторинг и управление SCM

Просмотр состояния DataNodes:

bin/ozone admin datanode list

Проверка контейнеров:

bin/ozone admin container list

Просмотр информации о контейнере:

bin/ozone admin container info <container-id>

8. Обработка сбоев и восстановление данных

Если один из узлов DataNode выходит из строя, SCM обнаруживает это по отсутствию heartbeat-сообщений. Затем он инициирует процесс восстановления недостающих реплик на других узлах.

Принудительное восстановление контейнера:

bin/ozone admin container recover <container-id>

9. Отказоустойчивость SCM

SCM поддерживает кластерный режим для обеспечения отказоустойчивости. В таком режиме несколько узлов SCM работают вместе, используя Raft-протокол для согласованности данных.

Пример настройки кластера SCM:

<property>
<name>ozone.scm.nodes</name>
<value>scm1,scm2,scm3</value>
</property>

<property>
<name>ozone.scm.address.scm1</name>
<value>scm1.example.com:9861</value>
</property>

<property>
<name>ozone.scm.address.scm2</name>
<value>scm2.example.com:9861</value>
</property>

<property>
<name>ozone.scm.address.scm3</name>
<value>scm3.example.com:9861</value>
</property>

Итог

Storage Container Manager (SCM) — ключевой компонент Apache Ozone, управляющий контейнерами данных и координирующий работу DataNodes. Он гарантирует репликацию и целостность данных, обеспечивает отказоустойчивость и балансировку нагрузки в кластере. SCM автоматически восстанавливает реплики при сбоях и поддерживает согласованность данных с помощью Raft-протокола. Правильная настройка и мониторинг SCM обеспечивают надёжную и эффективную работу распределённого хранилища Ozone.